Dynamic web-based integrated development environment

ABSTRACT

Certain aspects of the present disclosure provide techniques for establishing a web session between a computing device and a web-based integrated development environment to create and/or update files (e.g., content files and/or resource files). In the web session, content file(s) can be evaluated in real-time with one or more resource files. Further, in the web session, a set of validation rules of a resource file can be updated by the computing device. To stablish the web session, a first communication connection is established between the computing device and the web-based integrated development environment. With the first communication established, a second communication connection is established for real-time, bi-directional communication between the computing device and a language server instance of the web-based integrated development environment.

INTRODUCTION

Aspects of the present disclosure relate to a dynamic web-basedintegrated development environment for developers.

BACKGROUND

Developers of software program products, including softwareapplications, utilize various types of development environments tocreate and update software program products. For example, developers canutilize online integrated development environments, which are also knownas web or cloud-based integrated development environments. A developercan access features of the web-based integrated development environmentthrough a web browser. One such feature is a source code editor thatincludes syntax highlighting, error diagnostics, auto-completion, etc.The web browser of the web-based integrated development environmentallows developers to create and update software program products onclient computing devices such as a laptop or tablet.

However, a shortcoming of the web-based integrated developmentenvironment is that there is just one language backend server with oneset of validation rules for a domain specific language. The languagebackend server of the web-based integrated development environment loadsthe same resource file, including the same set of validation rules foreach editing session, and applies the same set of validation rules tocontent file(s).

As a result of such shortcoming, a software program developer utilizingthe web-based integrated development environment to create and updatecontent files for a software program has only one set of definedvalidation rules for each editing session. The developer is unable toswitch and apply a different set of validation rules because the webbrowser provided as part of the web-based integrated developmentenvironment can only operate with the one set of validation rules.

Therefore, a solution is needed that can overcome the shortcomings ofthe conventional method of developing software program products.

BRIEF SUMMARY

Certain embodiments provide a method of a dynamic web-based integrateddevelopment environment interacting with a client computing device. Themethod includes receiving a call from a computing device to initiate aweb session in a web-based integrated development environment. Themethod further includes initiating the web session with the computingdevice and a first language server instance, wherein the first languageserver instance coupled to a backend server includes a first resourcefile with a first set of rules. The method further includes loading acontent file to the web session. The method further includes applyingthe first set of rules to the content file in the web session. Themethod further includes evaluating, based on the application of thefirst set of rules, the content file. The method further includesreceiving a selection of a second set of rules in a second resource fileassociated with a second language server instance coupled to the backendserver. The method further includes applying the second set of rules tothe content file in the web session. The method further includesevaluating, based on the application of the second set of rules, thecontent file. The method further includes providing the evaluation ofthe content file to the computing device.

Certain embodiments provide a method of a computing device interactingwith a dynamic web-based integrated development environment. The methodincludes establishing a first communication connection with a web-basedintegrated development environment. The method further includesreceiving via the first communication connection a web browser from theweb-based integrated development environment. The method furtherincludes providing a request for a web session via the web browser. Themethod further includes receiving via a second communication connectionwith the web-based integrated development environment the web sessionthat includes: a first resource file and a content file. The methodfurther includes receiving a first evaluation of the content file basedon the first resource file. The method further includes updating thecontent file in the web session. The method further includes receiving asecond evaluation of the updated content file based on the firstresource file. The method further includes requesting a second resourcefile. The method further includes receiving a third evaluation of theupdated content file based on the second resource file.

Other embodiments provide systems to perform the aforementioned methodsassociated with a web-based integrated development environment and/or aclient computing device interacting with the web-based integrateddevelopment environment. Additionally, other embodiments providenon-transitory computer-readable storage mediums comprising instructionsfor performing the aforementioned methods.

The following description and the related drawings set forth in detailcertain illustrative features of one or more embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The appended figures depict certain aspects of the one or moreembodiments and are therefore not to be considered limiting of the scopeof this disclosure.

FIG. 1 depicts an example computing environment, according to anembodiment.

FIG. 2 depicts an example flow diagram of the integrated developmentenvironment implementing a capability, according to an embodiment.

FIG. 3 depicts an example flow diagram of the integrated developmentenvironment implementing a capability, according to an embodiment.

FIG. 4 depicts an example method of initiating a capability in theintegrated development environment, according to an embodiment.

FIG. 5 depicts an example method of initiating a capability in theintegrated development environment, according to an embodiment.

FIG. 6 depicts an example server, according to an embodiment.

FIG. 7 depicts an example computing device, according to an embodiment.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe drawings. It is contemplated that elements and features of oneembodiment may be beneficially incorporated in other embodiments withoutfurther recitation.

DETAILED DESCRIPTION

Aspects of the present disclosure provide apparatuses, methods,processing systems, and computer readable mediums for a dynamicweb-based integrated development environment for developers.

A dynamic web-based integrated development environment can beimplemented, which developers can access to create and/or update filesfor software program product(s). In some cases, the developers cancreate and/or update content files for the development of a softwareprogram. The content files can be domain specific language files thatcorrespond to a specific domain knowledge. For example, content filescan include calculation files. A calculation (calc) file or a calc graphcan include a set of operations (e.g., encoded in a set of nodes) tocalculate a result corresponding to the specific domain knowledge. Inother cases, the developers can create and/or update resource files.Resource files include files such as schema, model, and calc files,which contain a set of validation rules. The validation rules caninclude grammar rules to apply to content files. In some cases, thecontent file can also include a set of validation rules to apply toother content files.

In order to create and/or update files (e.g., content files and/orresource files), the web-based integrated development environment caninclude a single backend server that can couple to a plurality oflanguage server instances. Further, the web-based integrated developmentenvironment can include a web browser that is provided to developers,which can communicate with multiple language server instances.

In some cases, the web-based integrated development environment canevaluate a content file that a developer is creating and/or updating viathe web browser (e.g., in real time and/or upon request from thedeveloper via the computing device). The web-based integrateddevelopment environment can establish an initial connection with theclient computing device, for example, via a Hypertext Transfer Protocolor other types of similar communication protocols.

For example, the client computing device can initiate the initialconnection by accessing the web-based integrated developmentenvironment. In some cases, a client computing device can send a HTTPcall to the web-based integrated development environment. In doing so, acontent file for the web session is retrieved as well as a resourcefile. In some cases, the content file can be retrieved (upon request)from a database, network storage, etc. The content file can be loaded tothe web session, and the resource file can be loaded to a languageserver instance. During the first communication connection, a mappingcan also be identified between a web session identification provided bythe client computing device to the web-based integrated developmentenvironment. With the web session identification, the web-basedintegrated development environment can retrieve and load the resourcefile to a first language server instance.

After the initial connection (e.g., a first communication connection)retrieves the files (e.g., content and resource files) and establishes amapping to a language server instance, the initial connection can end,and a second communication connection can be established between alanguage server instance of the integrated development environment andthe computing device based on the mapping. The second communicationconnection can be a continuous, bi-directional communication connectionbetween the computing device and a language server instance.

Upon establishing the second communication connection to the firstlanguage server instance, the web-based integrated developmentenvironment can evaluate the content file on the client computing devicevia a first set of rules in the resource file.

Any edits or changes made to the content file can be saved to theweb-based integrated development environment by disconnecting the secondcommunication connection between the client computing device andweb-based integrated development environment and establishing a newfirst and second communication connection. For example, once the secondcommunication connection is disconnected between the client computingdevice and the first language server instance, a new first communicationconnection is established with the web-based integrated developmentenvironment (e.g., an HTTP put call). In the new first communicationconnection, a new web session identification can be received by theweb-based integrated development environment along with an updated file(e.g., a content file and/or resource file). With the new web sessionidentification, a new mapping can be identified for establishing a newsecond communication connection. Based on the new mapping, a new secondcommunication connection can be established between the client computingdevice with an updated content file and/or an updated resource fileloaded to a new language server instance.

In some cases, after the resource file and the content file are loadedto the web session, the client computing device can indicate a selectionof another set of rules in a different resource file to evaluate thecontent file. Based on the selection from the client computing device,the web-based integrated development environment can retrieve theresource file with the corresponding set of rules and load the secondresource file to a second language server instance that is coupled withthe backend server. In some cases, all available resource files areretrieved and loaded to the respective language server instance (e.g.,based on the first communication connection). In such cases, theresource file corresponding to the selection is applied to the contentfile when the computing device is connected to the language serverinstance. The web-based integrated server can disconnect a connectionbetween the client computing device and the first language serverinstance and establish a new connection between the client computingdevice and the second language server instance in the web session. Inparticular, a new first communication connection and secondcommunication connection are established between the client computingdevice and the second language server instance, after disconnecting thesecond communication with the first language server instance.

The second communication connection between the client computing deviceand each language server instance can be a real-time bi-directionalcontinuous communication connection, such as, for example, abi-directional web-socket connection. The second communicationconnection can be based on JSON-RPC protocols, Socket.io, and othersimilar types of protocols that establish real-time bi-directionalcontinuous communication connections. Once the new connection with thesecond language server is established, the web-based integrateddevelopment environment can evaluate the content file on the clientcomputing device with the second set of rules. The evaluation of thecontent file can be provided to the client computing device as anotification, message, etc.

In other cases, the web-based integrated development environment canreceive a request from a client computing device for editing and/orupdating a resource file that includes a set of validation rules. Theweb-based integrated development environment can provide the resourcefile to the client computing device and receive an updated version ofthe resource file. For example, the client computing device can editand/or update the set of validation rules in the resource file. Once theclient computing device provides the updated version of the resourcefile, the web-based integrated development environment can save theupdated version of the resource file that can then be used forevaluating content files.

To do so, the client computing device can disconnect the current secondcommunication connection with the web-based integrated developmentenvironment. Once disconnected, a new first communication connection canbe established in which the updated resource file is transmitted to theweb-based integrated development environment and stored. For thecomputing device to utilize the updated resource file, a new secondcommunication connection is established in which the updated resourcefile is applied to the loaded content file based on a mapping includedin the new first communication connection to a language server instancewith the updated resource file.

With the web-based integrated development environment capable ofswitching language server instances and editing resource files as wellas content files, developers can have greater flexibility whendeveloping software programs. A client computing device connected to theweb-based integrated development environment not only can change the setof validation rules applied to the content file (e.g., by retrieving anew resource file) but also can change the set of validation rules(e.g., by editing and/or updating a resource file). Further, theweb-based integrated development environment can provide multi-tenantediting on demand as well as real-time evaluation(s) to a clientcomputing device with capabilities described above, in part based on asingle backend server coupled to a plurality of language serverinstances and communication connections established in a web sessionwith the client computing device.

Example Computing Environment

FIG. 1 depicts an example computing environment 100. As illustrated, theexample computing environment 100 includes a client computing device 102(computing device) interacting with a web-based integrated developmentenvironment 104 (integrated development environment or IDE). Theintegrated development environment 104 can include a web browser module106, a database 108, a backend server 110, and an initialization service112.

A computing device 102 can include a computer, laptop, tablet, smartphone, or other such computing device with the same or similarcapabilities. In some cases, the computing device 102 can be associatedwith a developer of the software program product. The developer candevelop and update content file(s) 114 and/or resource file(s) 116associated with the software program product via the integrateddevelopment environment 104.

In order to do so, the integrated development environment 104 provides aweb browser to a computing device 102 via a web browser module 106. Theweb browser module 106 can generate a web browser for a computing device102 to interact with the integrated development environment 104. The webbrowser module 106 can provide the web browser to the computing device102 via a first communication connection. The first communicationconnection between the integrated development environment 104 and thecomputing device 102 can be based on Hypertext Transfer Protocol (HTTP),Hypertext Transfer Protocol Secure (HTTPS), or other similarcommunications protocols.

Once the web browser is provided to the computing device 102, theintegrated development environment 104 can receive credentials and/orauthentication information from the computing device 102 thatauthenticates the user of the computing device 102 to access a websession to create and/or edit files (e.g., content file(s) 114 and/orresource file(s) 116). For example, the integrated developmentenvironment 104 can receive a user name, identification, password, etc.of the user via the computing device 102. Along with the credentials,the integrated development environment 104 can receive a web sessionidentification that identifies a web session that a user of thecomputing device 102 is associated with (e.g., a web session the userpreviously accessed and is now returning to continue working on a fileor a new web session that is associated with the user's account).

With the web session identification, the integrated developmentenvironment 104 can initiate the web session with the computing device102. For example, the integrated development environment 104 canretrieve one or more resource file(s) 116 (e.g., a first resource file)that correspond to the web session identification received from the uservia the computing device 102. In some cases, the web sessionidentification can be associated with a previously accessed web session(e.g., that the user is returning to). In other cases, the web sessionidentification can be associated with a new web session.

Once the resource file 116 is retrieved, the resource file 116 is loadedto a first language server instance 118(1) coupled to the backend server110. The backend server 110 can be coupled to a plurality of languageserver instances such that each language server instance coupled to thebackend server 110 can host a different resource file 116.

In order to load the resource file 116 (e.g., a first resource file) toa first language server instance 118(1), a mapping 120 is identified inthe backend server 110. The mapping 120 can indicate which languageserver instance a resource file 116 should be loaded. In some cases, themapping 120 can be stored on a database, such as database 108. Theinitialization service 112 can retrieve the resource file 116. In somecases, the initialization service 112 can make a copy of the resourcefile 116. A copy can be made to preserve the current version of the setof validation rules in the resource file in case there is file damage,data loss, etc. The initialization service 112 can also load theresource file to the language server instance based on the mapping.

After loading the resource file 116 to the first language serverinstance 118(1), a web session is initiated by the integrateddevelopment environment 104 with the computing device 102 via a secondcommunication connection. In some cases, the second communicationconnection can utilize WSS (secure web socket) or JSON-RPC protocols.For example, the second communication connection can be a bi-directionalweb socket connection (e.g., WSS) between the language server instanceand the computing device. With the web session initiated, the integrateddevelopment environment 104 can provide a content file 114 and/orresource file 116, as requested via the computing device 102.

For example, a computing device 102 can request a content file 114 uponestablishing the initial connection between the computing device 102 andthe integrated development environment 104. The content file 114 can bea domain specific language file associated with a specific domainknowledge. In such cases, the integrated development environment 104 canretrieve the content file 114 from a database 108. The language serverinstance 118 with the resource file 116 can apply a set of validationrules (e.g., syntax grammar) to evaluate the content file 114 once thesecond communication connection is established. In some cases, theevaluation can be provided to the computing device 102 via anotification, a message, etc., indicating the results of the evaluation,such as syntax errors, recommendations, and so forth.

In some cases, the integrated development environment 104 can receive anindication from a user via the computing device 102 to apply a new setof validation rules to the content file. For example, a user can selecta second set of validation rules to apply to the content file 114 in theweb session. Based on the selection, the integrated developmentenvironment 104 can retrieve the corresponding resource file 116 (e.g.,a second resource file) that includes the selected second set ofvalidation rules. With the newly retrieved resource file 116, theintegrated development environment 104 can load such resource file to asecond language server instance 118(2) based on a mapping 120. In somecases, all available resource files 116 are loaded to the respectiveserver instance, and a resource file 116 is applied to a content file114 based on a selection of a user and the computing device 102connecting to the respective language server instance.

Further, in such cases where a resource file 116 is selected to apply toa content file 114, the integrated development environment 104disconnects the second communication connection between the firstlanguage server instance 118(1) and the computing device 102. Afterdisconnecting the second communication connection, a new firstcommunication connection and second communication connection areestablished. With the new first communication connection, the contentfile 114, the resource file 116, and a mapping 120 corresponding to asecond resource file 116 are retrieved. The integrated developmentenvironment 104 establishes a new second communication connectionbetween the second language server instance 118(2) based on the newmapping 120. The second language server instance 118(2) includes asecond set of validation rules in the second resource file that can beapplied to evaluate the content file 114 in the web session. A computingdevice 102 connected to the integrated development environment 104 has agreater degree of flexibility to switch between different sets ofvalidation rules when creating and/or updating a content file 114.

In addition to the integrated development environment 104 providing viaa computing device 102 the capability to apply and review different setsof validation rules to a content file 114, the integrated developmentenvironment 104 provides the capability to update and review thevalidation rules themselves. For example, if there is an update for aset of validation rules, the integrated development environment 104 canreceive a request for the resource file 116 that includes the requestedset of validation rules. Based on the request, the integrateddevelopment environment 104 can retrieve the resource file 116 from thedatabase 108 and provide the resource file 116 to the computing device102 in the web session.

Once the computing device 102 updates and provides the resource file 116back to the integrated development environment 104, the updated resourcefile 116 is saved. For example, the updated resource file 116 can besaved in the database 108. To save the updated resource file 116 (or anupdated content file 114), the current second communication connectionbetween a language server instance and the computing device 102 isdisconnected. A new first communication and second communicationconnection are established in which the updated file is received by theintegrated development environment 104 via the new first communicationconnection. Additionally, the integrated development environment 104updates the mapping accordingly to reflect the updated file and uses theupdated mapping to establish a new second communication connectionbetween the computing device and a language server instance.

The updated resource file 116 can be provided to other computing devicesthat the integrated development environment 104 has established websessions, based on the web session identification, mapping, and/orrequest from the computing device 102.

In some cases, the integrated development environment 104 can establishmultiple web sessions with the same computing device via a correspondingsecond communication connection (e.g., real-time, bi-directionalcontinuous connection) for each web session. In such cases, afterestablishing the first communication connection between the integrateddevelopment environment 104 and the computing device 102, the integrateddevelopment environment 104 can receive a request to establish multipleweb sessions. Based on the corresponding web session identification, theintegrated development environment 104 can establish a second websession between each corresponding language server instance and thecomputing device 102. In some cases, the web session can be in aseparate window on the computing device 102. For each web session, theintegrated development environment 104 can load the same or a differentresource file to the corresponding language server, based on the websession identification mapping.

Example Flow Diagram of the Integrated Development EnvironmentImplementing a Capability

FIG. 2 depicts an example flow diagram 200 of the integrated developmentenvironment implementing a capability.

In one embodiment, a first communication connection can be establishedbetween the integrated development environment 104 and the computingdevice 102. Based on the first communication connection, at 202, theintegrated development environment 104 provides a web browser to thecomputing device 102. For example, the web browser can be provided viaHTTP, HTTPS, or other similar communication protocols.

After providing the web browser, the integrated development environment104 can receive at 204 a call from the computing device 102 for a websession. For example, the integrated development environment 104 canreceive via the web browser a set of credentials. The set of credentialscan authentic a user of the computing device 102 to access the files(e.g., content files and/or resource files) in the integrateddevelopment environment 104. In some cases, the set of credentialsreceived from the computing device 102 can also include a web sessionidentification. Based on the web session identification, the integrateddevelopment environment 104 can initialize at 206 a web session betweenthe computing device 102 and a first language server instance that iscoupled to a backend server of the integrated development environment104, as described in FIG. 1.

Once the web session is initialized, the integrated developmentenvironment 104 can provide a content file to the computing device 102along with loading a resource file to a corresponding language server.The resource file includes a set of validation rules that can be appliedto evaluate 208 the content file. In some cases, the evaluation can be areal-time evaluation of the content file. For example, as a user isediting the content file in the web session, the integrated developmentenvironment 104 can apply the first set of rules in the resource file togenerate an evaluation in real-time, which is available to view on thecomputing device 102 as issues arise (e.g., syntax errors, suggestionsbased on the validation rules, etc.). In other cases, the evaluation canbe provided based on a request from the user via the computing device102.

In the web session, a user can change the set of rules evaluating thecontent file. To do so, the integrated development environment 104 canreceive 210 a request from a computing device 102 for a second resourcefile. The second resource file can include the second set of validationrules to apply to the content file. Once the integrated developmentenvironment 104 retrieves the second resource file and updates the websession with a new first and second communication connection between thecomputing device and a second language server instance, the integrateddevelopment environment 104 then provides 212 the second resource fileto the computing device 102 to evaluate 214 the content file based onthe set of validation rules of the second resource file.

Example Flow Diagram of the Integrated Development EnvironmentImplementing a Capability

FIG. 3 depicts an example flow diagram 300 of the integrated developmentenvironment implementing a capability.

As described in FIGS. 1-2, the integrated development environment 104can provide 302 a web browser to a computing device 102, receive 304 acall for a web session, initialize 306 the web session, and evaluate 308a content file based on a first resource file.

In some cases, during a web session, the integrated developmentenvironment 104 can receive 310 a request for the resource file itself.For example, a user can request the resource file to update one or morevalidation rules that are applied to the content file.

Upon receiving the request for the first resource file, the integrateddevelopment environment 104 can provide 312 the first resource file tothe computing device 102. In some cases, the integrated developmentenvironment 104 can provide the first resource file to the user of acomputing device 102 that has the requisite authority to access and/orupdate the resource file. For example, the integrated developmentenvironment 104 can review the credentials provided via the computingdevice 102 to confirm the authority to access and/or update the firstresource file.

After the first resource file is provided to the computing device 102,the integrated development environment 104 can receive 314 an update forthe first resource file that is saved so that going forward, futureevaluations in web sessions (including the current web session) canapply the updated rules to a content file. For example, the integrateddevelopment environment 104 can evaluate 316 the content file based onthe updated first resource file. In some cases, the integrateddevelopment environment 104 can evaluate other content files in otherweb sessions with the updated first resource file.

Example Method of Initiating a Capability in the Integrated DevelopmentEnvironment

FIG. 4 depicts an example method 400 of initiating a capability in theintegrated development environment

At 402, an integrated development environment receives a call from acomputing device to initiate a web session, as described in FIGS. 1-3.

At 404, the integrated development environment initiates the web sessionwith the computing device and a first language server, wherein the firstlanguage server instance is coupled to a backend server and includes afirst resource file with a first set of rules, as described in FIGS.1-3.

At 406, the integrated development environment loads a content file tothe web session, as described in FIGS. 1-3.

At 408, the integrated development environment applies the first set ofrules to the content file in the web session, as described in FIGS. 1-3.

At 410, the integrated development environment evaluates, based on theapplication of the first set of rules, the content file, as described inFIGS. 1-3.

At 412, the integrated development environment receives a selection of asecond set of rules in a second resource file associated with a secondlanguage server instance that is coupled to the backend server, asdescribed in FIGS. 1-3.

At 414, the integrated development environment applies the second set ofrules to the content file in the web session, as described in FIGS. 1-3.

At 416, the integrated development environment evaluates, based on theapplication of the second set of rules, the content file, as describedin FIGS. 1-3.

At 418, the integrated development environment provides the evaluationof the content file to the computing device, as described in FIGS. 1-3.

Example Method of Initiating a Capability in the Integrated DevelopmentEnvironment

FIG. 5 depicts an example method 500 of initiating a capability in theintegrated development environment.

At 502, a computing device establishes a first communication connectionwith an integrated development environment, as described in FIGS. 1-3.

At 504, the computing device receives via the first communicationconnection a web browser from the web-based integrated developmentenvironment, as described in FIGS. 1-3.

At 506, the computing device provides a request for a web session viathe web browser, as described in FIGS. 1-3.

At 508, the computing device receives via a second communicationconnection with the web-based integrated development environment, theweb session that includes a first resource file and a content file, asdescribed in FIGS. 1-3.

At 510, the computing device receives a first evaluation of the contentfile based on the first resource file, as described in FIGS. 1-3.

At 512, the computing device updates the content file in the websession, as described in FIGS. 1-3.

At 514, the computing device receives a second evaluation of the updatedcontent file based on the first resource file, as described in FIGS.1-3. In some cases, the computing device can receive a real-timeevaluation based on updates to the content file.

At 516, the computing device requests a second resource file, asdescribed in FIGS. 1-3. For example, the computing device can selectanother set of validation rules to apply to the content file.

At 518, the computing device receives a third evaluation of the updatedcontent file based on the second resource file, as described in FIGS.1-3.

Further, in some cases, the computing device can also request a firstresource file in the web session to edit. Upon receiving the firstresource file, the computing device updates the first resource file inthe web session. After the first resource file has been updated, thecomputing device provides the updated first resource file to theintegrated development environment for other web sessions (including onthe same or other computing devices with web sessions initiated by theintegrated development environment).

Example Server

FIG. 6 depicts an example server 600 that may perform the methodsdescribed herein, for example, with respect to FIG. 4. For example, theserver 600 can be a physical server or a virtual (e.g., cloud) serverand is not limited to a single server that performs the methodsdescribed herein, for example, with respect to FIGS. 1-4.

Server 600 includes a central processing unit (CPU) 602 connected to adata bus 612. CPU 602 is configured to process computer-executableinstructions, e.g., stored in memory 614 or storage 616, and to causethe server 600 to perform methods described herein, for example, withrespect to FIG. 4. CPU 602 is included to be representative of a singleCPU, multiple CPUs, a single CPU having multiple processing cores, andother forms of processing architecture capable of executingcomputer-executable instructions.

Server 600 further includes input/output (I/O) device(s) 608 andinterfaces 604, which allows server 600 to interface with input/outputdevices 608, such as, for example, keyboards, displays, mouse devices,pen input, and other devices that allow for interaction with server 600.Note that server 600 may connect with external I/O devices throughphysical and wireless connections (e.g., an external display device).

Server 600 further includes a network interface 610, which providesserver 600 with access to external network 606 and thereby externalcomputing devices.

Server 600 further includes memory 614, which in this example includes areceiving module 618, an initiating module 620, a loading module 622, anapplying module 624, an evaluating module 626, a providing module 628, aweb browser module 620, and an initialization service 632 for performingthe operations as described in FIGS. 1-4.

Note that while shown as a single memory 614 in FIG. 6 for simplicity,the various aspects stored in memory 614 may be stored in differentphysical memories, but all accessible by CPU 602 via internal dataconnections such as bus 612.

Storage 616 further includes content file(s) 634, which may include acontent file(s) provided to computing devices, as described in FIGS.1-5.

Storage 616 further includes resource file(s) 636, which may include aresource file(s) provided to computing devices, as described in FIGS.1-5.

Storage 616 further includes web session ID(s) 638, which may includeweb session ID(s), as described in FIGS. 1-5.

Storage 616 further includes mapping(s) 640, which may include websession ID(s), as described in FIGS. 1-5.

Storage 616 further includes language server instance(s) 642, which mayinclude language server instance(s), as described in FIGS. 1-5.

While not depicted in FIG. 6, other aspects may be included in storage616.

As with memory 614, a single storage 616 is depicted in FIG. 6 forsimplicity, but various aspects stored in storage 616 may be stored indifferent physical storages, but all accessible to CPU 602 via internaldata connections, such as bus 612, or external connections, such asnetwork interfaces 604. One of skill in the art will appreciate that oneor more elements of server 600 may be located remotely and accessed viaa network 606.

Example Computing Device

FIG. 7 depicts an example computing device 700 that may perform themethods described herein, for example, with respect to FIG. 5. Forexample, the computing device 700 can be a computer, laptop, tablet,smartphone, a virtual machine, or other computing device with the sameor similar capabilities.

Computing device 700 includes a central processing unit (CPU) 702connected to a data bus 712. CPU 702 is configured to processcomputer-executable instructions, e.g., stored in memory 714 or storage716, and to cause the computing device 700 to perform methods describedherein, for example, with respect to FIG. 5. CPU 702 is included to berepresentative of a single CPU, multiple CPUs, a single CPU havingmultiple processing cores, and other forms of processing architecturecapable of executing computer-executable instructions.

Computing device 700 further includes input/output (I/O) device(s) 708and interfaces 704, which allows computing device 700 to interface withinput/output devices 708, such as, for example, keyboards, displays,mouse devices, pen input, and other devices that allow for interactionwith computing device 700. Note that computing device 700 may connectwith external I/O devices through physical and wireless connections(e.g., an external display device).

Computing device 700 further includes a network interface 710, whichprovides computing device 700 with access to external network 706 andthereby external computing devices.

Computing device 700 further includes memory 714, which in this exampleincludes an establishing module 718, a receiving module 720, a providingmodule 722, an updating module 724, a requesting module 726.

Note that while shown as a single memory 714 in FIG. 7 for simplicity,the various aspects stored in memory 714 may be stored in differentphysical memories, but all accessible by CPU 702 via internal dataconnections such as bus 712.

Storage 716 further includes content file(s) 728, which may include acontent file(s) provided to computing devices, as described in FIGS. 1,4.

Storage 716 further includes resource file(s) 730, which may include aresource file(s) provided to computing devices as described in FIGS.1-3, 5.

Storage 716 further includes credential(s), as described in FIG. 1.

While not depicted in FIG. 7, other aspects may be included in storage716.

As with memory 714, a single storage 716 is depicted in FIG. 7 forsimplicity, but various aspects stored in storage 716 may be stored indifferent physical storages, but all accessible to CPU 702 via internaldata connections, such as bus 1112, or external connections, such asnetwork interfaces 704. One of skill in the art will appreciate that oneor more elements of computing device 700 may be located remotely andaccessed via a network 706.

Additional Considerations

The preceding description is provided to enable any person skilled inthe art to practice the various embodiments described herein. Theexamples discussed herein are not limiting of the scope, applicability,or embodiments set forth in the claims. Various modifications to theseembodiments will be readily apparent to those skilled in the art, andthe generic principles defined herein may be applied to otherembodiments. For example, changes may be made in the function andarrangement of elements discussed without departing from the scope ofthe disclosure. Various examples may omit, substitute, or add variousprocedures or components as appropriate. For instance, the methodsdescribed may be performed in an order different from that described,and various steps may be added, omitted, or combined. Also, featuresdescribed with respect to some examples may be combined in some otherexamples. For example, an apparatus may be implemented or a method maybe practiced using any number of the aspects set forth herein. Inaddition, the scope of the disclosure is intended to cover such anapparatus or method that is practiced using other structure,functionality, or structure and functionality in addition to, or otherthan, the various aspects of the disclosure set forth herein. It shouldbe understood that any aspect of the disclosure disclosed herein may beembodied by one or more elements of a claim.

As used herein, the word “exemplary” means “serving as an example,instance, or illustration.” Any aspect described herein as “exemplary”is not necessarily to be construed as preferred or advantageous overother aspects.

As used herein, a phrase referring to “at least one of” a list of itemsrefers to any combination of those items, including single members. Asan example, “at least one of: a, b, or c” is intended to cover a, b, c,a-b, a-c, b-c, and a-b-c, as well as any combination with multiples ofthe same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b,b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c).

As used herein, the term “determining” encompasses a wide variety ofactions. For example, “determining” may include calculating, computing,processing, deriving, investigating, looking up (e.g., looking up in atable, a database or another data structure), ascertaining and the like.Also, “determining” may include receiving (e.g., receiving information),accessing (e.g., accessing data in a memory) and the like. Also,“determining” may include resolving, selecting, choosing, establishingand the like.

The methods disclosed herein comprise one or more steps or actions forachieving the methods. The method steps and/or actions may beinterchanged with one another without departing from the scope of theclaims. In other words, unless a specific order of steps or actions isspecified, the order and/or use of specific steps and/or actions may bemodified without departing from the scope of the claims. Further, thevarious operations of methods described above may be performed by anysuitable means capable of performing the corresponding functions. Themeans may include various hardware and/or software component(s) and/ormodule(s), including, but not limited to a circuit, an applicationspecific integrated circuit (ASIC), or processor. Generally, where thereare operations illustrated in figures, those operations may havecorresponding counterpart means-plus-function components with similarnumbering.

The following claims are not intended to be limited to the embodimentsshown herein, but are to be accorded the full scope consistent with thelanguage of the claims. Within a claim, reference to an element in thesingular is not intended to mean “one and only one” unless specificallyso stated, but rather “one or more.” Unless specifically statedotherwise, the term “some” refers to one or more. No claim element is tobe construed under the provisions of 35 U.S.C. § 112(f) unless theelement is expressly recited using the phrase “means for” or, in thecase of a method claim, the element is recited using the phrase “stepfor.” All structural and functional equivalents to the elements of thevarious aspects described throughout this disclosure that are known orlater come to be known to those of ordinary skill in the art areexpressly incorporated herein by reference and are intended to beencompassed by the claims. Moreover, nothing disclosed herein isintended to be dedicated to the public regardless of whether suchdisclosure is explicitly recited in the claims.

What is claimed is:
 1. A method comprising: receiving a call from acomputing device to initiate a web session in a web-based integrateddevelopment environment; establishing a communication connection betweena first language server instance and the computing device wherein thecommunication connection is a bi-directional web socket connection;initiating the web session with the computing device and the firstlanguage server instance, wherein the first language server instancecoupled to a backend server includes a first resource file with a firstset of rules, wherein initiating the web session comprises: determininga web session identification of the web session; retrieving the firstresource file that corresponds to the web session identification; andloading the first resource file to the language server instance coupledthe backend server; loading a content file to the web session; applyingthe first set of rules to the content file in the web session;evaluating, based on the application applying of the first set of rules,the content file; receiving a selection of a second set of rules in asecond resource file associated with a second language server instancecoupled to the backend server, wherein receiving the section of thesecond set of rules further includes: disconnecting a first web socketconnection between the first language server instance and the computingdevice; establishing a new first communication connection; andestablishing a second web socket connection between the second languageserver instance and the computing device; applying the second set ofrules to the content file in the web session; evaluating, based on theapplying of the second set of rules, the content file; and providing theevaluation of the content file to the computing device.
 2. The method ofclaim 1, further comprising: providing a web browser to the computingdevice via an additional communication connection.
 3. The method ofclaim 1, wherein the loading of the first resource file to the firstlanguage server instance is based on a mapping of the web sessionidentification to the first language server instance.
 4. The method ofclaim 1, further comprising: receiving a request from the computingdevice for the first resource file; providing the first resource file tothe computing device; receiving an updated first resource file; andupdating the first language server instance with the updated firstresource file.
 5. The method of claim 1, further comprising initiatingtwo or more concurrent web sessions in the web-based integrateddevelopment environment from the computing device.
 6. A systemcomprising: a processor; and a memory storing instructions, which whenexecuted by the processor perform a method comprising: receiving a callfrom a computing device to initiate a web session in a web-basedintegrated development environment; establishing a communicationconnection between a first language server instance and the computingdevice wherein the communication connection is a bi-directional websocket connection; initiating the web session with the computing deviceand the first language server instance, wherein the first languageserver instance coupled to a backend server includes a first resourcefile with a first set of rules, wherein initiating the web sessioncomprises: determining a web session identification of the web session;retrieving the first resource file that corresponds to the web sessionidentification; and loading the first resource file to the firstlanguage server instance coupled the backend server; loading a contentfile to the web session; applying the first set of rules to the contentfile in the web session; evaluating, based on the applying of the firstset of rules, the content file; receiving a selection of a second set ofrules in a second resource file associated with a second language serverinstance coupled to the backend server, wherein receiving the selectionof the second set rules further includes: disconnecting a first websocket connection between the first language server instance and thecomputing device, establishing a new first communication connection; andestablishing a second web socket connection between the second languageserver instance and the computing device; applying the second set ofrules to the content file in the web session; evaluating, based on theapplying of the second set of rules, the content file; and providing theevaluation of the content file to the computing device.
 7. The system ofclaim 6, further comprising: providing a web browser to the computingdevice via an additional communication connection.
 8. The system ofclaim 6, wherein the loading of the first resource file to the firstlanguage server instance is based on a mapping of the web sessionidentification to the first language server instance.
 9. The system ofclaim 6, further comprising: receiving a request from the computingdevice for the first resource file; providing the first resource file tothe computing device; receiving an updated first resource file; andupdating the first language server instance with the updated firstresource file.
 10. The system of claim 6, further comprising initiatingtwo or more concurrent web sessions in the web-based integrateddevelopment environment from the computing device.